package xiaohongshu

import (
	"crypto/sha1"
	"encoding/hex"
	"fmt"
	"sort"
	"strconv"
)

func GetSignature(encrypt, token string, timestamp int64, nonce string) (string, error) {
	// 创建一个字符串切片并填充参数
	array := []string{token, strconv.FormatInt(timestamp, 10), nonce, encrypt}

	// 对切片进行排序
	sort.Strings(array)

	// 将排序后的字符串连接成一个单一字符串
	str := ""
	for _, s := range array {
		str += s
	}

	// 指定SHA-1算法
	h := sha1.New()
	h.Write([]byte(str))
	digest := h.Sum(nil)

	// 将字节数组转换为十六进制字符串
	hexStr := hex.EncodeToString(digest)

	return hexStr, nil
}

func test() {
	// 示例调用
	signature, err := GetSignature("your_encrypt_value", "your_token", 1234567890, "your_nonce")
	if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("Signature:", signature)
	}
}
